﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace XmlApplication
{
    class Program
    {
        private static List<BookModuel> bookModeList = new List<BookModuel>();
        static void Main(string[] args)
        {
            // Xml文档对象
            XmlDocument doc = new XmlDocument();
            // 由XmlReader.Create()方法创建XmlReader对象支持的一个组件功能
            XmlReaderSettings setting = new XmlReaderSettings();
            // 设置从指定URL提取的XmlReader对象是否忽略注释
            setting.IgnoreComments = true;
            // 指定一个URL和setting创建一个XmlReader对象
            XmlReader reader = XmlReader.Create(@"./Book.xml", setting);
            // 从创建的XmlReader对象加载Xml文档
            doc.Load(reader);
            //doc.LoadXml("<bookstore></bookstore>");
            // 关闭流
            reader.Close();

            // 获取第一个Node
            //XmlNode xn = doc.SelectSingleNode("bookstore");
            XmlNode xn = doc.ChildNodes.Item(1);
            // 提取该Node下的所有ChildNode子节点
            XmlNodeList xnl = xn.ChildNodes;


            // 循环所有子节点
            foreach (XmlNode xn1 in xnl)
            {
                BookModuel bookModuel = new BookModuel();

                

                // 将节点转为元素的对象
                XmlElement xe = (XmlElement)xn1;
                // 返回指定属性名的值
                bookModuel.bookISBN = xe.GetAttribute("ISBN");
                bookModuel.bookType = xe.GetAttribute("Type");

                // 获取子节点下的所有子节点
                XmlNodeList xnl0 = xe.ChildNodes;

                // 第一个节点内的内容
                bookModuel.bookName = xnl0.Item(0).InnerText;
                bookModuel.bookAuthor = xnl0.Item(1).InnerText;
                bookModuel.bookPrice = Convert.ToDouble(xnl0.Item(2).InnerText);
                bookModeList.Add(bookModuel);
            }

            // 创建一个book元素
            //XmlElement xelKey = doc.CreateElement("book");
            //XmlAttribute xelType = doc.CreateAttribute("Type");
            //xelType.InnerText = "自定义必修课2018 ";
            //xelKey.SetAttributeNode(xelType);

            //XmlAttribute xelISBN = doc.CreateAttribute("ISBN");
            //xelISBN.InnerText = "7-111-19149-2";
            //xelKey.SetAttributeNode(xelISBN);

            //XmlElement xelAuthor = doc.CreateElement("author");
            //xelAuthor.InnerText = "Android";
            //xelKey.AppendChild(xelAuthor);
            //doc.DocumentElement.AppendChild(xelKey);

            //doc.Save(@"./Book.xml");


            // 获取doc的根节点
            XmlElement nxe = doc.DocumentElement;
            // 设置查找要删除的XPath的表达式
            string strPath = string.Format("/bookstore/book[@ISBN=\"{0}\"]", "7-111-19149-2");
            // 查找符合条件的元素
            XmlElement selectXe = (XmlElement)nxe.SelectSingleNode(strPath);
            // 通过父级删除指定的子节点
            selectXe.ParentNode.RemoveChild(selectXe);
            // 丫的,结构都不对，肯定删除不了啊


            XmlElement xe2 = doc.DocumentElement;
            string strPath2 = string.Format("/bookstore/book[@ISBN=\"{0}\"]", "7-111-19149-3");
            XmlElement xmle = (XmlElement)xe2.SelectSingleNode(strPath2);
            xmle.SetAttribute("Type", "选修课");
            xmle.SetAttribute("ISBN", "7-111-19149-1");
            XmlNodeList xmln = xmle.ChildNodes;
            xmln.Item(0).InnerText = "what?路由器TMD也要学？";
            xmln.Item(1).InnerText = "俺";
            xmln.Item(2).InnerText = "0.01";

            doc.Save("./Book.xml");
            Console.WriteLine(xmle.OuterXml);
            Console.ReadKey();
        }
    }
}
